/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.losalpes.marketplace.pical.beans;

import co.com.losalpes.marketplace.pical.bos.CalificacionBO;
import co.com.losalpes.marketplace.pical.entities.Calificacion;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateful;

/**
 *
 * @author leon
 */
@Stateful
public class PICALBean implements PICALBeanRemote, PICALBeanLocal {
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

    List<CalificacionBO> calificacionBOs = IniciarMundo.getCalificaciones();

    /**
     * Se establece el estado de la calificacion en PENDIENTE
     *
     * @param cotizacionBO sin el numero
     * @return numero de la cotizacion
     */
    public String crearCalificacion(CalificacionBO calificacionBO) {
        String numero = "CAL" + System.currentTimeMillis();
        //calificacionBO.setNumero(numero);
        //calificacionBO.setEstado(Calificacion.E_PENDIENTE);
        //Calificacion calificacion = new Calificacion(calificacionBO);
        //this.getEm().persist(calificacion);
        calificacionBO.setNumero(numero);
        calificacionBOs.add(calificacionBO);
        return numero;
    }

    /**
     * Guarda una calificacion de un fabricante hacia un comercio *
     *
     * @param calificacionBO
     * @return
     */
    public boolean calificarFabricanteAComercio(CalificacionBO calificacionBO) {
        calificacionBOs.add(calificacionBO);
        return true;
    }

    /**
     * Guarda una calificacion de un comercio hacia un producto y el fabricante
     * ambas al tiempo
     *
     *
     * @param calificacionBO
     * @return
     */
    public boolean calificarComercioAProductoYFabricante(CalificacionBO calificacionBO) {
        calificacionBOs.add(calificacionBO);
        return true;
    }

    /**
     * Obtiene las calificaciones a realizar por un comercio o fabricante
     *
     * @param estado por defecto pendiente
     * @param nit del comercio
     * @return listado de calificaciones que puede realizar
     */
    public List<CalificacionBO> obtenerCalificacionesComercio(String estado, String nit) {
        List<CalificacionBO> calificaciones = new ArrayList<CalificacionBO>();//(List<CalificacionBO>) q.getResultList();
        for (CalificacionBO cal : calificacionBOs) {

            if (cal.getNit_comercio().equals(nit)) {

                if (cal.getNit_comercio().equals(nit) || cal.getNit_comercio().equals(nit)) {

                    calificaciones.add(cal);
                }
            }
        }
        return calificaciones;
    }

    /**
     * Obtiene las calificaciones a realizar por un comercio o fabricante
     *
     * @param estado por defecto pendiente
     * @param nit del faricante
     * @return listado de calificaciones que puede realizar
     */
    public List<CalificacionBO> obtenerCalificacionesFabricante(String estado, String nit) {
        List<CalificacionBO> calificaciones = new ArrayList<CalificacionBO>();//(List<CalificacionBO>) q.getResultList();
        for (CalificacionBO cal : calificacionBOs) {
            if ( cal.getNit_fabricante().equals(nit)) {
                calificaciones.add(cal);
            }
        }

        return calificaciones;
    }

    /**
     * Valida el estado de una calificacion;
     *
     * @param cal
     * @return
     */
    private String validarEstadoCalificacion(Calificacion cal) {
        if (cal.getCom_comercio() != null && cal.getCom_fabricante() != null && cal.getCom_producto() != null) {
            return Calificacion.E_TERMINADA;
        } else {
            return Calificacion.E_PENDIENTE;
        }
    }
}
